from django.db import models


class Admin(models.Model):
    """管理员表"""
    username = models.CharField(verbose_name='用户名', max_length=32)
    password = models.CharField(verbose_name='密码', max_length=64)

    def __str__(self):
        return self.username


class Department(models.Model):
    """部门表"""
    title = models.CharField(verbose_name='标题', max_length=32)  # verbose_name='标题' 注解（备注）

    def __str__(self):
        return self.title


class UserInfo(models.Model):
    """员工表"""
    name = models.CharField(verbose_name='姓名', max_length=16)
    password = models.CharField(verbose_name='密码', max_length=64)
    age = models.IntegerField(verbose_name='年龄')
    # max_digits=10, 总位数是10    decimal_places=2 小数占2位 default=0 默认为0
    account = models.DecimalField(verbose_name='账户余额', max_digits=10, decimal_places=2, default=0)
    create_time = models.DateTimeField(verbose_name='入职时间')  # 年月日 时分秒
    # create_time = models.DateField(verbose_name='入职时间')        # 年月日

    # 没有约束
    # depart_id = models.BigIntegerField(verbose_name='部门ID')

    # 1,有约束
    # to 表示要与那张表关联，   to_field 表示要与表的那列关联
    # 2,django自动
    # 写是depart 但在数据表中生成是 depart_id
    # 3,如果部门表被删除
    # on_delete=models.CASCADE 级联删除【对应的所有员工都删除
    depart = models.ForeignKey(verbose_name="所属部门", to='Department', to_field="id", on_delete=models.CASCADE)
    # 置空【对应的部门被删，空值
    # depart = models.ForeignKey(to='Department', to_field="id", null=True, blank=True, on_delete=models.SET_NULL)

    # 在django里面的约束【只能是1和2
    gender_choices = (
        (1, "男"),
        (2, "女")
    )
    gender = models.SmallIntegerField(verbose_name='性别', choices=gender_choices)


class PrettyNum(models.Model):
    """靓号表"""
    mobile = models.CharField(verbose_name="手机号", max_length=11)
    # price = models.DecimalField(verbose_name='价格', max_digits=10, decimal_places=2, default=0)
    # 想要使可为空值就加上 null=True,blank=True
    price = models.IntegerField(verbose_name='价格', default=0)

    level_choices = (
        (1, "一级"),
        (2, "二级"),
        (3, "三级"),
        (4, "四级"),
    )
    # 小整型
    level = models.SmallIntegerField(verbose_name='级别', choices=level_choices, default=1)  # default 默认

    status_choices = (
        (1, "已占用"),
        (2, "未使用")
    )
    status = models.SmallIntegerField(verbose_name='是否占用', choices=status_choices, default=2)


class Task(models.Model):
    """任务"""
    level_choices = (
        (1, '紧急'),
        (2, '重要'),
        (1, '临时'),
    )
    level = models.SmallIntegerField(verbose_name="级别", choices=level_choices, default=3)
    title = models.CharField(verbose_name="标题", max_length=64)
    detail = models.TextField(verbose_name="详细信息")
    # on_delete=models.CASCADE 级联删除(原表中数据删除，这里也删除)
    user = models.ForeignKey(verbose_name='负责人', to="Admin", on_delete=models.CASCADE)


class Order(models.Model):
    """ 订单 """
    oid = models.CharField(verbose_name='订单号', max_length=64)
    title = models.CharField(verbose_name='名称', max_length=32)
    price = models.IntegerField(verbose_name='价格')
    status_choices = {
        (1, '待支付'),
        (2, '已支付')
    }
    status = models.SmallIntegerField(verbose_name='状态', choices=status_choices, default=1)
    admin = models.ForeignKey(verbose_name='管理员', to='Admin', on_delete=models.CASCADE)


class Boos(models.Model):
    """ form上传的数据表 """
    name = models.CharField(verbose_name='姓名', max_length=32)
    age = models.IntegerField(verbose_name='年龄')
    img = models.CharField(verbose_name='头像', max_length=128)


class City(models.Model):
    """ model_form上传的数据表 ["""
    name = models.CharField(verbose_name='名称', max_length=32)
    count = models.IntegerField(verbose_name='人口')
    # 本质上数据库也是CharField 【FileField文件自动保存
    img = models.FileField(verbose_name='Logo', max_length=128, upload_to='city/')